home *** CD-ROM | disk | FTP | other *** search
/ Personal Computer World 2009 February / PCWFEB09.iso / Software / Linux / Kubuntu 8.10 / kubuntu-8.10-desktop-i386.iso / casper / filesystem.squashfs / bin / partman < prev    next >
Text File  |  2008-10-14  |  4KB  |  201 lines

  1. #!/bin/sh
  2.  
  3. . /lib/partman/lib/base.sh
  4. . /lib/partman/lib/commit.sh
  5.  
  6. abort () {
  7.     if [ -f /var/run/parted_server.pid ]; then
  8.         stop_parted_server
  9.     fi
  10.     exit $1
  11. }
  12.  
  13. # Implemented here instead of init.d because anna displays a progress bar
  14. # which conflicts with the init.d progress bar
  15. load_extra () {
  16.     local auto memreq_lvm memreq_crypto
  17.  
  18.     if [ -f /var/lib/partman/loaded-extra ]; then
  19.         return 0
  20.     fi
  21.     >/var/lib/partman/loaded-extra
  22.  
  23.     # Rough memory requirements in kB; could be made arch dependent
  24.     memreq_lvm=7500
  25.     memreq_crypto=11000    # 1MB more than limit in partman-crypto
  26.  
  27.     auto=""
  28.     if [ -f /lib/partman/lib/auto-shared.sh ]; then
  29.         auto=1
  30.     fi
  31.  
  32.     # partman-lvm is loaded first, then partman-crypto
  33.     if [ -f /lib/partman/lib/lvm-base.sh ]; then
  34.         :
  35.     elif [ $(memfree) -ge $memreq_lvm ]; then
  36.         if [ "$auto" ]; then
  37.             anna-install partman-auto-lvm
  38.         else
  39.             anna-install partman-lvm
  40.         fi
  41.     else
  42.         logger -t partman "Insufficient free memory to load LVM support"
  43.     fi
  44.     if [ -f /lib/partman/lib/crypto-base.sh ]; then
  45.         :
  46.     elif [ $(memfree) -ge $memreq_crypto ]; then
  47.         if [ "$auto" ]; then
  48.             anna-install partman-auto-crypto
  49.         else
  50.             anna-install partman-crypto
  51.         fi
  52.     else
  53.         logger -t partman "Insufficient free memory to load crypto support"
  54.     fi
  55. }
  56.  
  57. db_capb backup
  58.  
  59. ###########################################################
  60. # Compute some constants in order to make things faster.
  61. ###########################################################
  62.  
  63. # The width of partman/text/number.
  64. # number_width is used only in visual.d/number
  65. db_metaget partman/text/number description
  66. RET=$(printf "$RET" '')
  67. RET=$(stralign 50 "$RET" | sed 's/[^ ]//g')
  68. number_width=$((2 + 50 - ${#RET}))
  69. export number_width
  70.  
  71. # Detect if Debconf can escape strings
  72. # non-empty means we can escape
  73. can_escape=''
  74. if type debconf-escape >/dev/null 2>&1; then
  75.     db_capb backup
  76.     for cap in $RET; do
  77.         case $cap in
  78.             escape)    can_escape=yes ;;
  79.         esac
  80.     done
  81. fi
  82. export can_escape
  83.  
  84. # The decimal separator (dot or comma)
  85. #db_metaget partman/text/deci description
  86. #deci="$RET"
  87. # The comma has special meaning for debconf.  Lets force dot until we
  88. # start using escaped strings.
  89. deci='.'
  90. export deci
  91.  
  92. # work around bug #243373
  93. if [ "$TERM" = xterm ] || [ "$TERM" = bterm ]; then
  94.     debconf_select_lead="$NBSP"
  95. else
  96.     debconf_select_lead="> "
  97. fi
  98. export debconf_select_lead
  99.  
  100. ###########################################################
  101.  
  102.  
  103. # Commented due to #240145
  104. #if [ -e /var/lib/partman ]; then
  105. #    rm -rf /var/lib/partman
  106. #fi
  107.  
  108. mkdir -p /var/lib/partman
  109.  
  110. # Make sure all modules are available
  111. # Should really be done whenever anna installs a kernel package
  112. depmod -a
  113.  
  114. # Load additional components when sufficent memory is available
  115. load_extra
  116.  
  117. while true; do
  118.     initcount=$(ls /lib/partman/init.d/* | wc -l)
  119.     db_progress START 0 $initcount partman/progress/init/title
  120.  
  121.     for s in /lib/partman/init.d/*; do
  122.         if [ -x $s ]; then
  123.             #logger -t partman "Running init.d/$s"
  124.  
  125.             base=$(basename $s | sed 's/[0-9]*//')
  126.             # Not every init script has, or needs, its own progress
  127.             # template. Add them to slow init scripts only.
  128.             if ! db_progress INFO partman/progress/init/$base; then
  129.                 db_progress INFO partman/progress/init/fallback
  130.             fi
  131.             if ! $s; then
  132.                 db_progress STOP
  133.                 abort 10
  134.             fi
  135.         fi
  136.         db_progress STEP 1
  137.     done
  138.     db_progress STOP
  139.  
  140.     while true; do
  141.         for s in /lib/partman/display.d/*; do
  142.             if [ -x $s ]; then
  143.                 #logger -t partman "Running display.d/$s"
  144.                 $s || {
  145.                     exitcode=$?
  146.                     if [ $exitcode -eq 255 ]; then
  147.                         abort 10 # back up to main menu
  148.                     elif [ $exitcode -ge 128 ] && [ $exitcode -lt 192 ]; then
  149.                         abort $exitcode # killed by signal
  150.                     elif [ $exitcode -ge 100 ]; then
  151.                         break # successful partitioning
  152.                     else
  153.                         continue 2
  154.                     fi
  155.                 }
  156.             fi
  157.         done
  158.  
  159.         for s in /lib/partman/check.d/*; do
  160.             if [ -x $s ]; then
  161.                 #logger -t partman "Running check.d/$s"
  162.                 if ! $s; then
  163.                     continue 2
  164.                 fi
  165.             fi
  166.         done
  167.         if confirm_changes partman; then
  168.             break
  169.         fi
  170.     done
  171.  
  172.     if [ "$PARTMAN_NO_COMMIT" ]; then
  173.         exit 0
  174.     fi
  175.  
  176.     for s in /lib/partman/commit.d/*; do
  177.         if [ -x $s ]; then
  178.             #logger -t partman "Running commit.d/$s"
  179.             $s || continue 2
  180.         fi
  181.     done
  182.  
  183.     for s in /lib/partman/finish.d/*; do
  184.         if [ -x $s ]; then
  185.             #logger -t partman "Running finish.d/$s"
  186.             $s || {
  187.                 exitcode=$?
  188.                 if [ "$exitcode" = 1 ]; then
  189.                     continue 2
  190.                 else
  191.                     abort $exitcode
  192.                 fi
  193.             }
  194.         fi
  195.     done
  196.  
  197.     break
  198. done
  199.  
  200. exit 0
  201.